package tree;

import java.io.Serializable;

import board.Board;
import ui.GobanPanel;

/**
 * Interface for managing display of different page types.
 * @author TKington
 *
 */
public interface IDisplayStrategy extends Serializable {
	/**
	 * Causes the current page to be displayed.
	 * @param curPage the current PageNode
	 * @param goban the GobanPanel
	 * @param board the Board
	 */
	void display(PageNode curPage, GobanPanel goban, Board board);
	
	/**
	 * Called when the text pane mode has changed.
	 * @param mode the new mode
	 */
	void setTextPaneMode(int mode);
	
	/**
	 * Called when the user is navigating to a different page.
	 *
	 */
	void leavingPage();
	
	/**
	 * Classes implementing IDisplayStrategy must implement clone().
	 * @return a deep copy of this IDisplayStrategy implementing object
	 * @throws CloneNotSupportedException never
	 */
	IDisplayStrategy clone() throws CloneNotSupportedException;
}
